#ifndef __driver_kbd_h_
#define __driver_kbd_h_

// 功能按键开关记录
#define CAPS_LOCK_ON        1   // CAPSLOCK 大写锁定开启
#define CAPS_LOCK_OFF       0   // CAPSLOCK 大写锁定关闭

// 根据实验，键盘同时按两个 L/RSHIFT 以后松开一个还是大写的
// 因此左右都有的按键状态用增减 1 记录
#define ALT_FUNCTION_OFF    0   // ALT 键抬起
#define CTRL_FUNCTION_OFF   0   // CTRL 键抬起
#define SHIFT_FUNCTION_OFF  0   // SHIFT 键抬起

// 功能按键状态
extern int alt_status;
extern int ctrl_status;
extern int shift_status;
extern int caps_lock_status;

// 判断是否需要采用 SHIFT 键盘
#define shift_keyboard_on()     (shift_status > SHIFT_FUNCTION_OFF)
// 判断是否开启大写锁定
#define caps_keyboard_on()      (caps_lock_status == CAPS_LOCK_ON)

void keyboard_handler();

#endif
